package process2

import (
	utils "chatOnline/client/uitls"
	"chatOnline/common/message"
	"encoding/json"
	"fmt"
	"net"
)

/*
1.处理和短消息相关的请求
2.  群聊， 3 点对点聊天

*/

type SmsProcess struct {
}

// 转发消息
func (this *SmsProcess) SendGroupMes(mes *message.Message) {
	// 遍历服务器端的 onlineUsers map[int]*UserProcess
	// 将消息转发出去
	var smsMes message.SmsMes
	err := json.Unmarshal([]byte(mes.Data), &smsMes)
	if err != nil {
		fmt.Println(" sendGroupMes json.Unmarshal err=", err.Error())
		return
	}

	data, err := json.Marshal(mes)
	if err != nil {
		fmt.Println("sendGroupMes json.Marshal err=", err.Error())
		return
	}
	for id, up := range UserMgrs.onlineUsers {
		// 过滤自身
		if id == smsMes.UserId {
			continue
		}
		this.sendMesToEachOnlineUser(data, up.Conn)
	}
}

func (this *SmsProcess) sendMesToEachOnlineUser(data []byte, conn net.Conn) {

	// 创建一个Transfer 实例，发送data
	tf := &utils.Transfer{
		Conn: conn,
	}
	err := tf.WritePkg(data)
	if err != nil {
		fmt.Println(" tf message err=", err.Error())
		return
	}
}

// 转发消息
func (this *SmsProcess) SendSingleMes(mes *message.Message) {
	// 遍历服务器端的 onlineUsers map[int]*UserProcess
	// 将消息转发出去
	var smsMes message.SmsMes
	err := json.Unmarshal([]byte(mes.Data), &smsMes)
	if err != nil {
		fmt.Println(" sendGroupMes json.Unmarshal err=", err.Error())
		return
	}

	data, err := json.Marshal(mes)
	if err != nil {
		fmt.Println("sendGroupMes json.Marshal err=", err.Error())
		return
	}
	usr := UserMgrs.onlineUsers[smsMes.DistId]

	tf := utils.Transfer{
		Conn: usr.Conn,
	}
	err = tf.WritePkg(data)
	if err != nil {
		fmt.Println(" tf message err=", err.Error())
		return
	}

}
